今天會把 pybaseball 剩下的 functions 介紹完。主要是 Cache,跟一些查詢賽季紀錄的 functions。
因為很多的 functions 都會需要抓整季資料,假設我們重複使用相同的參數來透過 API 獲得資料,可能也會重複等待太多時間,這時候就能開啟 pybaseball 提供的 Cache 系統。
使用當方法非常簡單,只要 import cache
function 並執行 cache.enable()
就好。開啟後大多數的 functions 都會儲存 Cache 在本機的資料夾裡,預設的話會存在使用者資料夾裡的 .pybaseball/cache
(第一次使用會自動建立資料夾)。如果想改變儲存的資料夾可以修改環境變數 PYBASEBALL_CACHE
。
如果是使用 Colab 資料夾會放在 root
資料夾裡:
from pybaseball import cache, batting_stats_bref
# 開啟 Cache 快取系統
cache.enable()
# 儲存 function 回傳的資料進 Cache 資料夾
batting_stats_bref(2023)
預設的 Cache 儲存方式會是 Parquet
格式,不過他也有支援存成 csv
檔,只需要使用下面的程式碼即可:
from pybaseball import cache
cache.enable()
cache.config.cache_type='csv'
cache.config.save()
因為開啟快取系統後,儲存的快取資料會一直存在 .pybaseball
的資料夾裡,如果要清除的話可以使用這兩個 functions:
purge
:刪除所有紀錄,不論快取有無過期。flush
:刪除所有過期紀錄。但這邊需要注意一個問題,就是在使用 statcast
這個 function 的時候快取會儲存錯誤,原因是原始碼在包快取的時候有覆蓋到另一個快取,所以變成前一個快取還沒寫完,就去寫新的快取讓外面那個快取寫入異常,之後使用 purge
或 flush
都會出錯。詳情可以看下面這個 Issue 還有我嘗試解決所開的 PR:
去抓 Baseball Reference 隊伍頁裡的選取球季賽程與對戰成績。裡面會有勝負、結束後的戰績、勝敗投與救援成功的選手名等資料。會有兩個參數可以使用:
season
:必填,需為整數,想篩選的球季年份。team
:字串:必填,想篩選的球隊名稱。範例:
from pybaseball import schedule_and_record
# 獲得 2023 球季道奇隊的賽程與各場成績
schedule_and_record(2023, 'LAD')
獲得賽季的戰績排名,這個 function 也是從 Baseball Reference 上面的 頁面 取得資料。可以獲得各分區的戰績排名。有一個參數 season
可以使用,如果沒填的話會是選取最近一年的球季戰績。
範例:
from pybaseball import standings
# 獲得最近一年的各球隊戰績
standings()
# 獲得 2007 年的各球隊戰績
standings(2007)
今天介紹完最後剩下的一些 functions,感謝大家耐心地看完,這系列也即將邁向結束,再次感謝大家的觀看。如果我又遺漏的 functions 歡迎大家提醒我,我看再花一篇補充或是在留言回答,有任何錯誤也歡迎任何指教。沒意外的話明天會預計這次數據分析比賽我是怎麼使用 pybaseball 來完成我的比賽投稿的,希望大家會喜歡。
今日的程式碼:
https://colab.research.google.com/drive/1JJvrPjAtoWFaOW2gOZHLmh98cjpZ3D23?usp=sharing